package uniandes.cupi2.photoViewer.interfaz;

import javax.swing.JPanel;
import javax.swing.border.TitledBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JScrollPane;
import javax.swing.JList;
import javax.swing.JButton;
import javax.swing.ListSelectionModel;

import uniandes.cupi2.photoViewer.listas.IListaEtiqueta;

import java.awt.Dimension;

public class PanelFotos extends JPanel implements ActionListener, ListSelectionListener
{
	private final static String AGREGAR_ETIQUETAS = "Agregar Etiquetas";
	private final static String ELIMINAR_ETIQUETAS = "Eliminar Etiquetas";
	private final static String AGREGAR_FOTOS = "Agregar Fotos";
	private final static String ELIMINAR_FOTOS = "Eliminar Fotos";
	private final static String VER_FOTOS = "Ver Fotos";
	
	private JTextField txtNombre;
	private JTextField txtFecha;
	private InterfazPhotoViewer principal;
	private JList listaEtiquetas;
	private JButton btnAgregarEtiqueta;
	private JButton btnEliminarEtiquetas;
	private JButton btnAgregarFotos;
	private JButton btnEliminarFotos;
	private JButton btnVerFotos;

	/**
	 * Create the panel.
	 */
	public PanelFotos(InterfazPhotoViewer ventana)
	{
		principal = ventana;
		
		setBorder(new TitledBorder(null, "Informacion album", TitledBorder.LEADING, TitledBorder.TOP, null, null));
		setLayout(new GridLayout(6,2));
		
		JLabel lblNombreAlbm = new JLabel("Nombre Album:");
		add(lblNombreAlbm);
		
		txtNombre = new JTextField();
		txtNombre.setEditable(false);
		add(txtNombre);
		txtNombre.setColumns(10);
		
		JLabel lblFechaDelAlbum = new JLabel("Fecha creacion album: ");
		add(lblFechaDelAlbum);
		
		txtFecha = new JTextField();
		txtFecha.setEditable(false);
		add(txtFecha);
		txtFecha.setColumns(10);
		
		JLabel lblEtiquetas = new JLabel("Etiquetas: ");
		add(lblEtiquetas);

		listaEtiquetas = new JList();
		listaEtiquetas.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
		listaEtiquetas.addListSelectionListener( this );
		
		JScrollPane scrollPane = new JScrollPane(listaEtiquetas);
		scrollPane.setPreferredSize(new Dimension(10, 10));
		add(scrollPane);
		
		
		btnAgregarEtiqueta = new JButton(AGREGAR_ETIQUETAS);
		btnAgregarEtiqueta.setSize(new Dimension(0, 25));
		btnAgregarEtiqueta.setPreferredSize(new Dimension(155, 20));
		btnAgregarEtiqueta.setMinimumSize(new Dimension(155, 20));
		btnAgregarEtiqueta.setMaximumSize(new Dimension(155, 20));
		btnAgregarEtiqueta.setActionCommand(AGREGAR_ETIQUETAS);
		btnAgregarEtiqueta.addActionListener(this);
		add(btnAgregarEtiqueta);
		
		btnEliminarEtiquetas = new JButton(ELIMINAR_ETIQUETAS);
		btnEliminarEtiquetas.setActionCommand(ELIMINAR_ETIQUETAS);
		btnEliminarEtiquetas.addActionListener(this);
		add(btnEliminarEtiquetas);
		
		btnAgregarFotos = new JButton(AGREGAR_FOTOS);
		btnAgregarFotos.setActionCommand(AGREGAR_FOTOS);
		btnAgregarFotos.addActionListener(this);
		add(btnAgregarFotos);
		
		btnEliminarFotos = new JButton(ELIMINAR_FOTOS);
		btnEliminarFotos.setActionCommand(ELIMINAR_FOTOS);
		btnEliminarFotos.addActionListener(this);
		add(btnEliminarFotos);
		
		btnVerFotos = new JButton(VER_FOTOS);
		btnVerFotos.setActionCommand(VER_FOTOS);
		btnVerFotos.addActionListener(this);
		add(btnVerFotos);
		
		btnAgregarEtiqueta.setEnabled(false);
		btnAgregarFotos.setEnabled(false);
		btnEliminarEtiquetas.setEnabled(false);
		btnEliminarFotos.setEnabled(false);
		btnVerFotos.setEnabled(false);

	}
	
	public void actionPerformed(ActionEvent cursor)
	{
		String comando = cursor.getActionCommand();
		if(comando.equals(AGREGAR_ETIQUETAS))
		{
			principal.abrirDialogoAgregarEtiquetaAlbum( txtNombre.getText() );
		}
		else if(comando.equals(ELIMINAR_ETIQUETAS))
		{
			principal.abrirDialogoEliminarEtiquetaAlbum( txtNombre.getText() );
		}
		else if(comando.equals(AGREGAR_FOTOS))
		{
			principal.abrirDialogoAgregarFoto();
		}
		else if(comando.equals(ELIMINAR_FOTOS))
		{
			principal.abrirDialogoEliminarFoto();
		}
		else if(comando.equals(VER_FOTOS))
		{
			principal.abrirDialogoVerFotos();
		}
	}

	public void actualizarInformacion(String nombre, String fecha, String[] etiquetas)
	{
		txtNombre.setText(nombre);
		txtFecha.setText(fecha);
		listaEtiquetas.setListData(etiquetas);
		listaEtiquetas.setSelectedIndex(0);
	}
	
	public void actualizarListaEtiquetas( IListaEtiqueta etiquetas )
	{
		listaEtiquetas.setListData(etiquetas.toArray());
		listaEtiquetas.setSelectedIndex(0);
	}

	public void activarBotones( )
	{
		btnAgregarEtiqueta.setEnabled(true);
		btnAgregarFotos.setEnabled(true);
		btnEliminarEtiquetas.setEnabled(true);
		btnEliminarFotos.setEnabled(true);
		btnVerFotos.setEnabled(true);
	}
	
	@Override
	public void valueChanged(ListSelectionEvent e) 
	{
		
	}
	
}
